/**
 * colorLog 彩色日志工具使用示例
 * 
 * 这个文件仅作为示例，展示如何使用彩色日志工具
 */
import colorLog from './colorLog';

// 导入方式
// import colorLog from '@/utils/colorLog';

// 基本使用示例
function basicExamples() {
  // 打印标题
  colorLog.title('这是标题样式');
  
  // 打印子标题
  colorLog.subtitle('这是子标题样式');
  
  // 打印键值对
  colorLog.keyValue('用户名', 'admin');
  colorLog.keyValue('状态', '在线', null, colorLog.getPresets().success);
  
  // 打印不同类型信息
  colorLog.success('这是成功信息');
  colorLog.warning('这是警告信息');
  colorLog.error('这是错误信息');
  colorLog.info('这是普通信息');
  
  // 打印对象
  const user = { id: 1, name: '张三', role: '管理员' };
  colorLog.object('用户对象', user);
  
  // 自定义样式
  colorLog.custom('自定义样式文本', 'color:#FF1493; font-size:16px; text-decoration:underline;');
  
  // 打印表格
  const users = [
    { id: 1, name: '张三', role: '管理员' },
    { id: 2, name: '李四', role: '用户' }
  ];
  colorLog.table(users);
}

// 分组使用示例
function groupExample() {
  // 默认展开分组
  colorLog.group('用户登录信息', () => {
    colorLog.keyValue('用户名', 'admin');
    colorLog.keyValue('角色', '管理员');
    colorLog.keyValue('登录时间', new Date().toLocaleString());
  });
  
  // 默认折叠分组
  colorLog.group('详细权限信息', () => {
    colorLog.keyValue('系统管理', '允许');
    colorLog.keyValue('用户管理', '允许');
    colorLog.keyValue('角色管理', '允许');
    colorLog.keyValue('日志管理', '只读');
  }, true); // 第三个参数传入true表示默认折叠
}

// 在特定场景中的应用示例
function useCases() {
  // 1. API请求日志
  function logApiRequest(url, method, params) {
    colorLog.group('API请求', () => {
      colorLog.keyValue('URL', url);
      colorLog.keyValue('Method', method, null, colorLog.getPresets().warning);
      colorLog.subtitle('请求参数');
      colorLog.object('Params', params);
    });
  }
  
  // 2. 错误日志
  function logError(message, error) {
    colorLog.group('错误信息', () => {
      colorLog.error(message);
      if (error.stack) {
        colorLog.custom('错误堆栈', 'color:#FF6347; font-size:12px;');
        console.log(error.stack);
      }
    });
  }
  
  // 示例调用
  logApiRequest('/api/users', 'GET', { page: 1, limit: 10 });
  
  try {
    // 模拟错误
    throw new Error('数据获取失败');
  } catch (error) {
    logError('获取用户列表失败', error);
  }
}

export {
  basicExamples,
  groupExample,
  useCases
};

/**
 * 说明:
 * 
 * 1. 该工具只在开发环境(NODE_ENV === 'development')下生效
 * 2. 生产环境下不会输出任何日志
 * 3. 可以获取预设样式: colorLog.getPresets()
 * 4. 大多数方法都支持传入自定义样式作为最后一个参数
 */ 